package common

type H map[string]interface{}

const (
	// msg types
	MSG_TEXT         = 1     // text message
	MSG_IMG          = 3     // image message
	MSG_PF           = 40    // POSSIBLEFRIEND_MSG
	MSG_SHARE_CARD   = 42    // 分享个人名片和公众号卡片
	MSG_VIDEO        = 43    // video message
	MSG_EMOTION      = 47    // gif
	MSG_LOCATION     = 48    // location message
	MSG_LINK         = 49    // shared link message
	MSG_VOIP         = 50    // VOIPMSG
	MSG_STATUSNOTIFY = 5     // wechat STATUS NOTIFY 状态通知
	MSG_VOIPNOTIFY   = 52    // VOIPNOTIFY
	MSG_VOIPINVITE   = 53    // VOIPINVITE
	MSG_SHORT_VIDEO  = 62    // short video message
	MSG_SYSNOTICE    = 9999  // SYSNOTICE
	MSG_SYS          = 10000 // system message
	MSG_WITHDRAW     = 10002 // withdraw notification message 回撤消息

	ONLOGIN    = 10000001 //登录完成后执行的事件
	QR_CODE    = 10000002 //二维码获取和更新的事件
	ON_MESSAGE = 10000003 // 方便在插件中注册websocket连接收到的消息的处理方法
)

const (
	Material_Text           = 1  //文本
	Material_Image          = 2  //图片
	Material_Link           = 3  //链接
	Material_Audio          = 4  //音频
	Material_Hongbao        = 6  //红包
	Material_ServiceAccount = 7  //公众号
	Material_MiniProgram    = 8  //小程序
	Material_Sns            = 9  //朋友圈
	Material_Video          = 11 //视频
)

// User: contact struct
type User_bak struct {
	Uin      int
	UserName string
	NickName string
	//HeadImgUrl        string
	EncryptUsername string //
	ContactFlag     int
	MemberCount     int
	//MemberList        []*User  //名字换了 ms 6-30
	RemarkName        string
	PYInitial         string
	PYQuanPin         string
	RemarkPYInitial   string
	RemarkPYQuanPin   string
	HideInputBarFlag  int
	StarFriend        int
	Sex               int
	Signature         string
	AppAccountFlag    int
	Statues           int
	AttrStatus        int
	Province          string
	City              string
	Alias             string
	QuanPin           string
	VerifyFlag        int
	OwnerUin          int
	WebWxPluginSwitch int
	HeadImgFlag       int
	SnsFlag           int
	UniFriend         int
	DisplayName       string
	ChatRoomId        int
	KeyWord           string
	EncryChatRoomId   string
	IsOwner           int
	MemberStatus      int
	ChatRoomOwner     string
	stranger          bool

	FieldTalker    string
	Type           string  //好友类型
	RoomMemberList []*User //群成员
}

// 群或者好友列表
type User struct {
	Alias      string //别名
	Nickname   string //昵称
	VerifyFlag string // 是否是好友
	Username   string //用户id
	//IsRobot    string // 是否是机器人

	RoomMemberList []*User //成员列表
}

//重新定义群成员列表 7-24
type RoomUser struct {
	Alias            string //别名
	Nickname         string //群名称
	Username         string //用户id
	MemberWXNameList string //成员名称列表
	MemberWXIdList   string //成员id列表
}

// VerifyUser: verify user request body struct
type VerifyUser struct {
	Value            string
	VerifyUserTicket string
}

/**
 * from Message
 */
type RecommendInfo struct {
	UserName   string
	NickName   string // display_name
	Content    string // request message
	HeadImgUrl string // message.RecommendInfo.HeadImgUrl
	Ticket     string // a pass token
	VerifyFlag uint32
}

// ReceivedMessage: for received message 旧消息格式
//type ReceivedMessage struct {
//	IsGroup       bool
//	MsgId         string
//	Content       string
//	FromUserName  string
//	ToUserName    string
//	RecommendInfo *RecommendInfo
//	Ticket        string
//	Who           string //群消息的发送者
//	MsgType       int
//	SubMsgType    int
//	Url           string //文件的路径
//	BinData       []byte //文件的二进制数据
//}

// //{"type":3,"field_user":"mengsheng","field_talker":"5027416311@chatroom","field_img":"th_1f3b2167a28acdeacf3cb9fe0415bbd3hd",
//// "field_imgPath":"/storage/sdcard/tencent/MicroMsg/fa2dbc1370d2c784860ad6dc86378676/image2/1f/3b/th_1f3b2167a28acdeacf3cb9fe0415bbd3hd","field_msgId":8,"field_msgSvrId":2394234140688118373}
//收到的消息格式
type ReceivedMessage struct {
	Type          int    //消息类型   图片是3
	FromUserName  string //发送人
	FromNickName  string
	ToUserName    string //接收人
	RoomUserName  string //群id
	MsgSvrId      int    //wx  的消息id
	MsgId         int    //wx  的消息id
	Content       string
	RecommendInfo *RecommendInfo
	BinData       []byte //文件的二进制数据
}

//向机器人发送消息的结构体
type SendMessage struct {
	ToUserName       string //// wx_id 群的微信Id （素材发送给相应的群和微信好友）
	ToNickName       string
	DelUserName      string //踢人的UserName
	DelNickName      string //按昵称删除
	VerifyUserTicket string //同意好友验证的Ticket
	NewTopic         string //改群名：改成此名称
	AtListUserName   []string
	MaterialMessage  *MaterialMessage
	//FilePath		 string //已经废弃
	//FileKey			 string //已经废弃
	//Content 		 string //已经废弃
}

//修改群名
type EditGroup struct {
	Username       string   //群id
	New_name       string   // 群名称
	AssistantIds   []string // 拉那些机器人进群
	Assistant_id   string   // 群所属的机器人id
	Assistant_name string   // 群所属的机器人名称
	DelMember      bool     // 是否踢人
	ActivityStatus bool     // 活动是否已开启
}

/*素材授权码数据*/
type AuthData struct {
	Username string //微信id
	Code     string //授权码
}

/*
*素材消息
*type (1 文本；2 图片；3 链接；7 公众号；8 小程序；)

ewrwqerwqer[流泪]&nbsp;&nbsp;<br>&nbsp; &nbsp;<br><br>
要替换成  123\n1254\n745880056680\n   2655\n0000
*/
type MaterialMessage struct {
	Alias     string          // 当type=7 时 表示公众号账号
	AppId     string          // 当type=8 时 表示小程序appid
	ID        string          // 当type=7 时 表示公众号原始id，当type=8 时 表示小程序原始id
	Content   string          // 当type=1 时 表示文本内容
	Title     string          // 当type=3 时 表示链接标题，当type=7 时 表示公众号名字，当type=8 时 表示小程序标题
	Url       string          // 当type=3 时 表示链接地址，当type=8 时 表示小程序链接地址
	Desc      string          // 当type=3 时 表示链接简介，当type=8 时 表示小程序描述
	MediaPath string          // 当type=2 时 表示图片url地址，当type=3 时 表示图片url地址，当type=8 时 表示小程序大图片url地址
	MediaKey  string          // MediaPath 的 key 值
	IconUrl   string          // 当type=8 时 表示小程序小图标的url地址
	Type      int             // 消息类型（1 文本；2 图片；3 链接；7 公众号；8 小程序；9，朋友圈素材）
	SnsAlbum  []MaterialAlbum //朋友圈素材
	//Orginid   string          //当type=7 时 表示公众号原始id，当type=8 时 表示小程序原始id
}

//朋友圈素材图片结构
type MaterialAlbum struct {
	Src  string
	Type int
}

//推送使用的结构体
type PushData struct {
	Content    string // 当type=1 时 表示文本内容
	Material   MaterialMessage
	MaterialId int32
}
